﻿/*
 * Created by SharpDevelop.
 * User: Miguel
 * Date: 05/10/2011
 * Time: 02:42 a.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Business_Entity;
using Business_Logic;
using Org.BouncyCastle.Asn1.X509;
using PetSoft.GUI;

namespace PetSoft.GUI.Compras
{
	/// <summary>
	/// Description of GUIBuscarProveedor.
	/// </summary>
    /// 
    public partial class GUIBuscarProveedor : Form
	{
          private Boolean gestionar;
          private List<BEProveedor> proveedores;
          private BEProveedor proveedorSeleccionado;
          private GUIMantenimientoDeCompras guiMC;
          private GUINuevaOrdenDeCompra guiNOC;
          private int opcion;
          private bool condicion;
		public GUIBuscarProveedor()
		{
			
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			try{
				InitializeComponent();
				this.NuevoBTN.Enabled=false;
				this.VerBTN.Enabled=false;
				this.EliminarBTN.Enabled=false;
				for (int i=0;i<BLInfo.usuarioActual.Rol.Privilegio.Count;i++){
	                if ((new BLPrivilegio()).existePrivilegio(2,"COMP","PROV",BLInfo.UsuarioActual.Rol.Privilegio)){
	                   
						this.NuevoBTN.Enabled=true;
						this.VerBTN.Enabled=true;
						this.EliminarBTN.Enabled=true;
					
					
					}
        			if ((new BLPrivilegio()).existePrivilegio(1,"COMP","PROV",BLInfo.UsuarioActual.Rol.Privilegio)){
			        	
						
						this.VerBTN.Enabled=true;
						
	                }
	            }
				
				
				this.AceptarBTN.Hide();
				cargarKeys();
				//Opcion sirve para saber en que constructor me encuentro
				opcion=0;
				//habilitar handler()///
				this.ContactoTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasNumerosTB);
				this.RazonTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasNumerosTB);
				this.RucTB.KeyPress += new KeyPressEventHandler(Utils.SoloNumerosTB);		
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		//Miguel Este es mi COnstructor
		public GUIBuscarProveedor(GUIMantenimientoDeCompras guiMant){
			try{
				InitializeComponent();
				cargarKeys();
				opcion=1;
				allCheckCB.Enabled=false;
				guiMC=guiMant;
				EliminarBTN.Enabled=false;
				VerBTN.Enabled=false;
				NuevoBTN.Enabled=false;
				GridProveedoresDGV.MultiSelect=false;
			}
			catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		public GUIBuscarProveedor(GUINuevaOrdenDeCompra guiNOC1){
			try{
				InitializeComponent();
				cargarKeys();
				opcion=2;
				allCheckCB.Enabled=false;
				guiNOC=guiNOC1;
				EliminarBTN.Enabled=false;
				VerBTN.Enabled=false;
				NuevoBTN.Enabled=false;
				GridProveedoresDGV.MultiSelect=false;
			}
			catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void BuscarBTNClick(object sender, EventArgs e)
		{
			try{
	            String Codigo = codigoTB.Text.ToString();
	            String RUC = RucTB.Text.ToString();
	            String Razon = RazonTB.Text.ToString();
	            String Contacto = ContactoTB.Text.ToString();
	            condicion=true;
	            cargarGrillaProveedor(Codigo, RUC, Razon, Contacto);
            }catch(Exception ex){
				Utils.MessageError("",ex);
			}
            
		}
		
        private void cargarGrillaProveedor(String BCodigo, String BRuc, String BRazon, String BContacto)
        {
          try{  
        	
	        	GridProveedoresDGV.Rows.Clear();
	
	            proveedores = Business_Logic.BLProveedor.BuscarProveedor(BCodigo, BRuc, BRazon, BContacto);
	            this.CantidadLB.Text = proveedores.Count.ToString();
	          
	            
	            foreach (BEProveedor proveedor in proveedores)
	            {
	
	            
	                GridProveedoresDGV.Rows.Add();
	
	                //MessageBox.Show("" + proveedor.IdProv + " " + proveedor.Ruc + " " + proveedor.RazonSocial + " " + proveedor.Direccion + " " + proveedor.Telefono + " " + proveedor.Contacto + " " + proveedor.TelefonoContacto);
	
	                DataGridViewRow row = GridProveedoresDGV.Rows[GridProveedoresDGV.Rows.Count - 1];
	
	                row.Cells["codigo"].Value = proveedor.IdProv;
	                row.Cells["ruc"].Value = proveedor.Ruc;
	                row.Cells["razonSocial"].Value = proveedor.RazonSocial;
	                row.Cells["contacto"].Value = proveedor.Contacto;
	                row.Cells["telefonoContacto"].Value = proveedor.TelefonoContacto;
	                row.Cells[0].Value=false;
	                row.Cells["conteo"].Value=proveedores.IndexOf(proveedor);
	               // row.Cells["seleccionar"].
	                //this.allCheckCB.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
	
	            }
	///Miguel parte insertada de codigo a Buscar
	///            if (GridProveedoresDGV.Rows.Count>0){
	///            	GridProveedoresDGV.Rows[0].Selected=true;
	///            }
	///Termina aqui

        	}catch(Exception ex){
				Utils.MessageError("",ex);
			}

        }



		void NuevoBTNClick(object sender, EventArgs e)
		{
			try{
			GUIProveedor guiP = new GUIProveedor(true);
            guiP.ShowDialog(this);
            cargarGrillaProveedor("", "", "", "");
            }catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void VerBTNClick(object sender, EventArgs e)
		{
			try{
				int cont2 = 0;
	            int aux = 0;
	            int pos = 0;
	
	            foreach (DataGridViewRow fila in GridProveedoresDGV.Rows)
	            {
	                if (fila.Cells[0].Value != null && (bool)fila.Cells[0].Value)
	                {
	                    cont2++;
	                    pos = aux;
	                }
	                aux++;
	            }
	
	            if (cont2 == 0)
	            {	Utils.MessageAviso("Seleccione un Proveedor");
	            }
	            else if (cont2 == 1)
	            {
	                DataGridViewRow fila = GridProveedoresDGV.Rows[pos];
	                if (fila.Cells[0].Value != null && (bool)fila.Cells[0].Value)
	                {
	                	proveedorSeleccionado = proveedores[int.Parse(GridProveedoresDGV.Rows[pos].Cells["conteo"].Value.ToString())/*pos*/];
	                    GUIProveedor guiP = new GUIProveedor(proveedorSeleccionado);
	                    guiP.deshabilitarTextBoxs();
	                    guiP.ShowDialog(this);
	                    cargarGrillaProveedor("", "", "", "");
	                }
	            }
	            else if (cont2 > 1)
	            {	Utils.MessageAviso("Seleccione sólo un Proveedor");
	            }
            
            }catch(Exception ex){
				Utils.MessageError("",ex);
			}
          }
		
		void GridProveedoresDGVCellContentClick(object sender, DataGridViewCellEventArgs e)
		{
			
		}

        private void GUIBuscarProveedor_Load(object sender, EventArgs e)
        {

        }

        private void FiltroDeBusquedaGB_Enter(object sender, EventArgs e)
        {

        }
        
        private void codigoTBPress(object sender, KeyPressEventArgs e)
        {
        	try{
        		this.validaNum(sender, e);
        	}catch(Exception ex){
				Utils.MessageError("",ex);
			}
        }

        private void validaNum(object sender, KeyPressEventArgs e)
        {
        	try{
	        	if (Char.IsDigit(e.KeyChar))
	            {
	                e.Handled = false;
	            }
	            else if (Char.IsControl(e.KeyChar))
	            {
	                e.Handled = false;
	            }
	            else if (Char.IsSeparator(e.KeyChar))
	            {
	                e.Handled = false;
	            }
	            else
	            {
	                e.Handled = true;
	            }
	          }catch(Exception ex){
				Utils.MessageError("",ex);
			}
        }

        private void RucLB_Click(object sender, EventArgs e)
        {

        }
  		
///Miguel metodo nuevo		
		void AceptarBTNClick(object sender, EventArgs e)
		{
			try{
				int filaselected=-1; int cont=0;
				for (int j=0;j<GridProveedoresDGV.Rows.Count;j++){
					if ((bool)GridProveedoresDGV[0,j].Value==true){
						cont++;
						if (cont==1){
							filaselected=j;
						}						
					}
				}
				if (filaselected!=-1)
				{
					if (cont<=1){
						if (opcion==1)
						{
							if (GridProveedoresDGV.Rows.Count>0){
								int fila=filaselected;
								BEProveedor beProv=new BEProveedor();
								beProv.IdProv=(int)GridProveedoresDGV[1,fila].Value;
								beProv.Ruc=GridProveedoresDGV[2,fila].Value.ToString();
								beProv.RazonSocial=GridProveedoresDGV[3,fila].Value.ToString();
								beProv.Contacto=GridProveedoresDGV[4,fila].Value.ToString();
								beProv.TelefonoContacto=GridProveedoresDGV[5,fila].Value.ToString();
								guiMC.InsertarProveedorElegido(beProv);
								this.Close();
							}
							else{
								Utils.MessageAviso("Debe de haber al menos un prooveedor seleccionado");
							}
						}
						else{
							if (GridProveedoresDGV.Rows.Count>0){
								int fila=filaselected;
								BEProveedor beProv=new BEProveedor();
								beProv.IdProv=(int)GridProveedoresDGV[1,fila].Value;
								beProv.Ruc=GridProveedoresDGV[2,fila].Value.ToString();
								beProv.RazonSocial=GridProveedoresDGV[3,fila].Value.ToString();
								beProv.Contacto=GridProveedoresDGV[4,fila].Value.ToString();
								beProv.TelefonoContacto=GridProveedoresDGV[5,fila].Value.ToString();
								guiNOC.InsertarProveedorElegido(beProv);
								this.Close();
							}
							else{
								Utils.MessageAviso("Debe de haber al menos un proveedor seleccionado");
							}
						}
					}
					else{
						Utils.MessageAviso("Solo debe de seleccionar un proveedor");
					}
				}
				else{
					Utils.MessageAviso("Debe haber al menos un proveedor seleccionado");
				}
			}
			catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
////
		
		void EliminarBTNClick(object sender, EventArgs e)
		{
			
			try{
		            int cont2 = 0;
		            List<int> indiceProveedores = new List<int>();
		
		            foreach (DataGridViewRow fila in GridProveedoresDGV.Rows)
		            {
		                if (fila.Cells[0].Value != null && (bool)fila.Cells[0].Value)
		                {
		                    cont2++;
		                    indiceProveedores.Add(int.Parse(fila.Cells[1].Value.ToString()));
		                }
		            }
		
		            if (cont2 == 0)
		            {	Utils.MessageAviso("Debe seleecionar al menos un Proveedor");
		            }
		            else if (cont2 > 0)
		            {	if(Utils.MessagePregunta("¿Está seguro que desea eliminar al(a los) Proveedor(es) seleccionado(s)?"))
		                {
		                    BLProveedor blTemporal = new BLProveedor();
		                    foreach (int indice in indiceProveedores)
		                    {
		                        blTemporal.EliminarProveedor(indice);
		                    }
		                }
		
		            }
		
		            cargarGrillaProveedor("", "", "", ""); 
            }catch(Exception ex){
				Utils.MessageError("",ex);
			}


		}

        private void button1_Click(object sender, EventArgs e)
        {	GridProveedoresDGV.Rows.Clear();
            this.RucTB.Text = "";
            this.codigoTB.Text = "";
            this.RazonTB.Text = "";
            this.ContactoTB.Text = "";
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {	try{
            for (int i = 0; i < this.GridProveedoresDGV.RowCount; i++)
            {
                this.GridProveedoresDGV[0, i].Value = this.allCheckCB.Checked;
            }
            }catch(Exception ex){
				Utils.MessageError("",ex);
			}
        }

        private void cargarKeys(){
        
        	try{
	      		this.codigoTB.KeyPress+=new KeyPressEventHandler(Utils.SoloNumerosTB);
				this.codigoTB.ShortcutsEnabled=false;
				this.RazonTB.KeyPress+=new KeyPressEventHandler(Utils.NoCaracteresRarosTB);
				this.RazonTB.ShortcutsEnabled=false;
				this.RucTB.KeyPress+=new KeyPressEventHandler(Utils.SoloNumerosTB);
				this.RucTB.ShortcutsEnabled=false;
				this.ContactoTB.KeyPress+=new KeyPressEventHandler(Utils.SoloLetrasTB);
				this.ContactoTB.ShortcutsEnabled=false;
        	}catch(Exception ex){
				Utils.MessageError("",ex);
			}
        
        
        }
		
		void GridProveedoresDGVCellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
		{
			
		}
		
		void GridProveedoresDGVCellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
		{
			try{
				int fila=GridProveedoresDGV.CurrentRow.Index;
				if ((bool)GridProveedoresDGV[0,fila].Value){
					GridProveedoresDGV[0,fila].Value=false;
				}
				else{
					GridProveedoresDGV[0,fila].Value=true;
				}
			
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
	}
}
